#include <stdio.h>  
#include <stdlib.h>  
#include <linux/input.h>  
#include <fcntl.h>  
#include <sys/time.h>  
#include <sys/types.h>  
#include <sys/stat.h>  
#include <unistd.h>  
#include <iostream>
#include <pthread.h>
#include "fuminux_swapper.h"

using namespace std;

void* mice_t(void* args) {
    int fd, retval;
    char buf[6];
    fd_set readfds;
    struct timeval tv;
    // 打开鼠标设备  
    fd = open("/dev/input/mice", O_RDONLY);
    // 判断是否打开成功  
    if (fd < 0) {
        printf("Failed to open mice.\n");
        exit(1);
    }

    while (1) {
        // 设置最长等待时间

        tv.tv_sec = 0;
        tv.tv_usec = 1000*100;

        FD_ZERO(&readfds);
        FD_SET(fd, &readfds);

        retval = select(fd + 1, &readfds, NULL, NULL, &tv);
        if (retval == 0) {
            fi.mice_click = 0;
            fi.mice_move_x = 0;
            fi.mice_move_y = 0;
        }
        if (FD_ISSET(fd, &readfds)) {
            // 读取鼠标设备中的数据  
            if (read(fd, buf, 6) <= 0) {
                continue;
            }
            fi.mice_click= buf[0] & 0x07;
            fi.mice_move_x = buf[1];
            fi.mice_move_y = buf[2];
        }
    }
    close(fd);
}

void mice() { 
    // 定义线程的 id 变量，多个变量使用数组
    pthread_t tids;
    //参数依次是：创建的线程id，线程参数，调用的函数，传入的函数参数
    pthread_create(&tids, NULL, mice_t, NULL);

}
